package ioStream.file;


/**
 * Created with IntelliJ IDEA
 * Description:对象流学习
 * User:22954
 * Date:2024-03-18
 * Time:17:17
 */
@SuppressWarnings("all")
public class ObjectStream {
    /*
    对象流:可以吧内存中的数据(基本数据类型数据,对象的处理流)持久化,在需要时可以还原成内存层面的数据----保存数据时保存数据类型
            ObjectInputStream和ObjectOutputStream
    序列化和反序列化:
        序列化:允许吧内存中的Java对象转换成与平台无关的二进制流,从而允许吧这种二进制流持久保存在硬盘上,或者通过网络将这种二进制流传输到另一个网络节点
              -----在保存数据时,保存数据的值和数据类型
        反序列化:其他程序获得该二进制流,可以恢复成原来的Java对象
               ----在恢复数据时,恢复数据的值和数据类型
    对象的序列化机制:
        一个对象要可持久化到一个文件中,必须保证对象所属的类是可序列化的
        一个类要可序列化,必须实现如下两个接口之一:
            1.Serializable  标记接口,没有方法----常用
            2.Externalizable  接口下有方法需要重载----不常用
    =========================================================
    节点流细节:
        1.读写顺序要一致
        2.需实现序列化和反序列化的对象,必须实现Serializable或Externalizable接口
        3.序列化的类中添加SerialVersionUID可提高版本兼容性----在改变类信息时不会被重新序列化为新对象----非必须,建议常用
        4.序列化对象时,默认将对象的所有属性序列化,不包括static和transient修饰的属性
        5.序列化对象时,对象的所有非静态属性都必须可序列化
        6.序列化具备可继承性,父类实现系列化,所有子类也默认可序列化
     */

}
